1. Field of the Invention
The present invention relates to a decoding method and apparatus and a storage medium. More particularly, the present invention relates to a decoding method and apparatus and a storage medium, suitable for decoding an MPEG-2 video bit stream.
2. Description of the Related Art
The MPEG (Moving Picture Experts Group)-2 is a method of coding a video signal into a high-efficiency compressed form according to the standard ISO/IEC (International Standards Organization/International Electrotechnical Commission) 13818-2 and the recommendation ITU-T (International Telecommunication Union-Telecommunication sector) H.262.
According to the MPEG-2 technique, respective pictures in a video signal are coded into one of three picture forms which are different in coding efficiency (intraframe coded picture (I picture), interframe forward predictive coded picture (P picture), and bidirectional predictive coded picture (B picture)). In the case of I pictures, coding is performed on the basis of spatial correlation within a frame of a picture. In P pictures, coding is performed using motion prediction with respect to a previous I or P picture. In the case of B pictures, coding is performed using motion compensation with respect to a previous or following I or P picture. Thus, coding efficiency increases in the order I, P, and B pictures.
Coding according to MPEG-2 is described in further detail with reference to FIG. 1. In the case where a video signal is coded into, for example, I1, B2, B3, P4, . . . , P13 (where subscripts denote the order in which pictures are displayed), the picture I1 is coded on the basis of spatial correlation within a frame, the picture P4 is coded on the basis of a motion compensation prediction from the picture I1, and the image P7 is coded on the basis of a motion compensation prediction from the picture P4. Furthermore, for example, the image B2 is coded on the basis of a motion compensation prediction from the picture I1 and the picture P4, and the image B5 is coded on the basis of a motion compensation prediction from the picture P4 and the picture P7.
MPEG-2 coded streams are classified according to a profile determined by the coding method and a level determined by the number of pixels to be handled so that MPEG-2 coded streams can be used in a wide variety of applications. Of various MPEG-2 classes, for example, MP@ML (Main Profile/Main Level) is widely used in DVB (Digital Video Broadcast) and DVD (Digital Versatile Disk). The profile and the level are described in sequence_extension which will be described later with reference to FIG. 6.
4:2:2P (4:2:2 Profile) is defined as a profile for an MPEG-2 coded stream adapted for use in broadcasting. In 4:2:2P, the upper limit of the bit rate is set to a sufficiently high value so that a color difference signal of a video signal can be treated according to the 4:2:2 format in a similar manner to a conventional baseband signal. As one of levels of MPEG-2 coded streams, HL (High Level) is defined for use in coding a next-generation high-resolution video signal.
FIG. 2 illustrates representative examples of classes defined in the MPEG-2 standard. They are 4:2:2P@HL (4:2:2 Profile High Level), 4:2:2P@ML (4:2:2 Profile Maine Level), MP@HL (Main Profile High Level), MP@HL-1440 (Main Profile High Level-1440), MP@ML (Main Profile Main Level), HP@LL (Main Profile Low Level), and SP@ML (Simple Profile Main Level). In FIG. 2, the upper limits of the respective parameters (bit rate, the number of samples per line, the number of lines per frame, processing time per frame, processing time per sample) are also shown.
As shown in FIG. 2, in 4:2:2P@HL, the upper limit of the bit rate is 300 Mbits/sec, and the upper limit of the number of pixels is 62,668,800 pixels/sec. On the other hand, in MP@ML, the upper limit of the bit rate is 15 Mbits/sec and the upper limit of the number of pixels is 10,368,000 pixels/sec. That is, a video decoder for decoding a video signal into the 4:2:2P@HL format needs processing abilities 20 times higher in terms of the bit rate and of about 6 times higher in terms of the number of pixels than are needed for an MP@ML video decoder.
The level structure of an MPEG-2 video bit stream is described below with reference to FIG. 3. At the beginning of a picture layer at the top, sequence_header is described. sequence_header defines header data of a bit stream sequence. In the case where the bit stream has no sequence_extension following first sequence_header of the sequence, the rule described in ISO/IEC11172-2 is applied to that bit stream. On the other hand, if there is sequence_extension after first sequence_header of the sequence, sequence_extension is put immediately after any sequence_header generated thereafter. Thus, in the specific example shown in FIG. 3, sequence_extension is put immediately after each sequence_header.
sequence_extension defines extension data in a sequence layer of the MPEG bit stream. sequence_extension is placed only immediately after sequence_header, and sequence_extension is not allowed to be placed immediately before sequence_end_code at the end of the bit stream so that no frame is lost after performing decoding and reordering of frames. Furthermore, when the bit stream includes sequence_extension, picture_coding_extension is placed immediately after each picture_header.
A GOP (Group Of Picture) includes a plurality of pictures. GOP_header defines header data in a GOP layer of the MPEG bit stream. Furthermore, data elements defined by picture_header and picture coding_extension are described in the bit stream. One picture is coded in picture_data following picture_coding_extension after picture_header. The first coded frame following GOP_header is a coded I frame (that is, the first picture after GOP_header is an I-picture). In the ITU-T recommendation H.262,various extensions in addition to sequence_extension and picture_coding_extension are also defined, although they are not described herein.
picture_header defines header data of a picture layer of the MPEG bit stream. Picture_coding_extension defines extension data of the picture layer of the MPEG bit stream.
picture_data describes data elements in a slice layer and a macroblock layer of the MPEG bit stream. picture_data is divided into a plurality of slices, and each slice is divided into a plurality of macro_block, as shown in FIG. 3.
Each macroblock includes 16×16 pixel data. Macroblocks at the beginning and at the end of a slice are not skip macroblocks (macroblocks containing no information). In the case of frame pictures which can be coded using a frame DCT (Discrete Cosine Transform) and a field DCT, macroblocks subjected to frame coding and macroblock subjected to field coding are different in internal structure.
Each macroblock includes one area in which luminance components are described and one area in which color difference components are described. The term “macroblock” is used to describe an information source, decoded data, or a corresponding coded data component. A macroblock is formed in one of three color difference formats, 4:2:0, 4:2:2,or 4:4:4. The manner in which blocks are arranged in a macroblock varies depending upon the color difference format.
FIG. 4(A) illustrates a macroblock in the color difference format of 4:2:0. In the 4:2:0 format, a macroblock is composed of four luminance (Y) blocks and two color difference blocks (one Cb block and one Cr block). FIG. 4(B) illustrates a macroblock in the color difference format of 4:2:0. In the 4:2:2 format, a macroblock is composed of four luminance (Y) blocks and four color difference blocks (two Cb blocks and two Cr blocks).
Each macroblock can be predictive-coded in one of two modes: a field prediction mode and a frame prediction mode. In field prediction, a field is predicted using data of one or more previous decoded fields. In frame prediction, a frame is predicted using data of one or more previous decoded frames. Within a field picture, prediction is performed only by field prediction. On the other hand, for frame pictures, prediction is possible by either field prediction or frame prediction. The prediction mode is selected for each macroblock. In predictive coding of a macroblock, in addition to the field prediction and the frame prediction, 16×8 motion compensation and two special dual prime prediction modes may be used.
Motion vector information and other associated information are coded together with a prediction error signal of each macroblock. A motion vector is coded such that a last motion vector coded into a variable length code is employed as a prediction vector and a difference vector with respect to the prediction vector is coded. The maximum displayable vector length can be programmed for each picture. Calculations of motion vectors are properly performed by a coder.
After picture_data, next sequence_header and sequence_extension are placed. The data elements described in these sequence_header and sequence_extension are exactly the same as those described in sequence_header and sequence_extension at the beginning of the sequence of the video stream. Describing the same data at different locations in the stream in the above-described manner makes it possible to reduce the probability that data in the sequence layer cannot be received successfully and thus the stream cannot be decoded when a receiving apparatus starts to receive the bit stream from a part in the middle of the bit stream.
Finally, after data elements defined by the last sequence_header and sequence_extension, that is, at the end of a data stream, 32-bit sequence_end_code is placed to indicate the end of the sequence.
The respective data elements are described in further detail below with reference to FIGS. 5 to 12.
FIG. 5 illustrates the data structure of sequence_header. sequence_header includes, as data elements, sequence_header_code, horizontal_size_value, vertical_size_value, aspect_ratio_information, frame_rate_code, bit_rate_value, marker_bit, vbv_buffer_size_value, constrained_parameter_flag, load_intra_quantiser_matrix, intra_quantiser_matrix, load_non_intra_quantiser_matrix, and non_intra quantiser_matrix.
sequence_header_code is data serving as a start synchronization code of the sequence layer. horizontal_size_value is data consisting of low-order 12 bits of the value representing the number of pixels in the horizontal direction of a picture. vertical_size_value is data consisting of low-order 12 bits of the value representing the number of lines in the vertical direction of a picture. aspect_ratio_information is data representing the aspect ratio (vertical to horizontal ratio) of a pixel or a screen. frame_rate_code is data representing a rate at which a picture frame is displayed. bit_rate_value is data consisting of low-order 18 bits of the value representing the bit rate which limits the number of bits generated.
marker_bit is bit data inserted to prevent start code emulation. vbv_buffer_size_value is data consisting of low-order 10 bits of the value representing the size of a virtual buffer VBV (Video Buffering Verifier) for controlling the size of a generated code. constrained_parameter_flag is data indicating that respective parameters are within limited ranges. load_non_intra_quantiser_matrix is data indicating that there is quantization matrix data for a non-intra macroblock. load_intra_quantiser_matrix is data indicating that there is quantization matrix data for an intra macroblock. intra_quantiser_matrix is data representing the values of a quantization matrix for an intra macroblock. non_intra_quantiser_matrix is data representing the values of a quantization matrix for a non-intra macroblock.
FIG. 6 illustrates the data structure of sequence_extension. sequence_extension include data elements such as extension_start_code, extension_start_code_identifier, profile_and_level_indication, progressive_sequence, chroma_format, horizontal_size_extension, vertical_size_extension, bit_rate_extension, marker_bit, vbv_buffer_size_extension, low delay, frame_rate_extension_n and frame_rate_extension_d.
extension_start_code is a start synchronization code of extension data. extension_start_code_identifier is data representing the type of extension data. profile_and_level_indication is data specifying a profile and a level of video data. progressive_sequence is data indicating that video data is sequentially scanned (progressive picture). chroma_format is data specifying a color difference format of the video data. horizontal_size_extension is high-order 2-bit data which is added to horizontal_size_value of a sequence header. vertical_size_extension is high-order 2-bit data which is added to vertical_size_value of a sequence header.
bit_rate_extension is high-order 12-bit data which is added to bit_rate_value of the sequence header. marker_bit is bit data inserted to prevent start code emulation. vbv_buffer_size_extension is high-order 8-bit data which is added to vbv_buffer_size_value of the sequence header. low_delay is data indicating that no B picture is included. frame_rate_extension_n is data which is combined with frame_rate_code of the sequence header to obtain a frame rate. frame_rate_extension_d is data which is combined with frame_rate_code of the sequence header to obtain a frame rate.
FIG. 7 illustrates the data structure of GOP_header. GOP_header consists of data elements of group_start_code, time_code, closed_gop, and broken_link.
group_start_code is a start synchronization code of a GOP layer. time_code is a time code representing a time of a first picture of a GOP. closed_gop is flag data indicating that a picture in a GOP can be reproduced independently of the other GOPS. broken_link is flag data indicating that a first B-picture in a GOP cannot be accurately reproduced because of a modification resulting from edition or the like.
FIG. 8 illustrates the data structure of picture_header. Data elements of picture_header include picture_start_code, temporal_reference, picture_coding_type, vbv_delay, full_pel_forward_vector, forward_f_code, full_pel_backward_vector and backward_f_code.
picture_start_code is data serving as a start synchronization code of a picture layer. temporal_reference is data which represent the order in which pictures are displayed and which is reset at the start of a GOP. picture_coding_type is data representing the type of a picture. vbv_delay is data representing an initial state of a virtual buffer in random accessing. full_pel_forward_vector, forward_f_code, full_pel_backward_vector, backward_f_code are fixed data which are not used in the MPEG-2.
FIG. 9 illustrates the data structure of picture_coding_extension. picture_coding_extension includes extension_start_code, extension_start_code_identifier, f_code[0][0], f_code[0][1], f_code[1][0], f_code[1][1], intra_dc_precision, picture_structure, top_field_first, frame_pred_frame_dct, concealment_motion_vectors, q_scale_type, intra_vlc_format, alternate_scan, repeat_first_field, chroma—420_type, progressive_frame, composite_display_flag, v_axis, field_sequence, sub_carrier, burst_amplitude and sub_carrier_phase.
extension_start_code is data serving as a synchronization code indicating the start of extension data in a picture layer. extension_start_code_identifier is data representing the type of extension data. f_code[0][0] is data representing the search range of a horizontal motion vector in a forward direction. f_code[0][1] is data representing the search range of a vertical motion vector in a forward direction. f_code[1][0] is data representing the search range of a horizontal motion vector in a backward direction. f_code[1][1] is data representing the search range of a vertical motion vector in a backward direction.
intra_dc_precision is data representing the degree of precision of DC coefficients. If DCT is applied to a matrix f representing luminance and color difference signals of the respective pixels within a block, an 8×8 DCT coefficient matrix F is obtained. A coefficient at the upper left corner of the DCT coefficient matrix F is called a DC coefficient. The DC coefficient is a signal representing the mean luminance and the means color difference of a block. picture_structure is data indicating whether a picture has a frame structure or a field structure. In the case where picture_structure indicates that a picture has the field structure, picture_structure further includes data indicating whether the field is upper or lower one. top_field_first is data representing, when the structure is the frame structure, whether the first field is upper or lower filed. frame_predictive_frame_dct is data used only when the structure is the frame structure to indicate that the frame-mode DCT prediction is performed only in the frame mode. concealment_motion_vectors is data indicating that an intra macroblock includes a motion vector for concealing a transmission error.
q_scale_type is data indicating whether a linear quantization scale or a nonlinear quantization scale is used. intra_vlc_format is data indication whether an intra macroblock uses another 2-dimensional VLC (Variable Length Coding). alternate_scan indicates whether scanning is performed in a zigzag fashion or an alternate fashion. repeat_first_field is data used in 2:3 pulling down. In chroma—420_type, the same value as the next progressive_frame is described when the 4:2:0 color difference format is used, while 0 is described when the color difference format is not 4:2:0. progressive_frame is data indicating whether or not the present picture is sequentially scanned. composite_display_flag is data indicating whether or not a source signal is a composite signal. v_axis, field_sequence, sub_carrier, burst_amplitude, and sub_carrier_phase are used when the source signal is a composite signal.
The data structure of picture_data is described with reference to FIG. 10. function picture_data( ) defines data elements by function slice( ). At least one data element defined by function slice( ) is described in a bit stream.
As shown in FIG. 11, function slice( ) is defined by data elements including slice_start_code, quantiser_scale_code, intra_slice_flag, intra_slice, reserved_bits, extra_bit_slice, and extra_information_slice and also by function macroblock( ).
slice_start_code is a start code indicating the start of a data element defined by function slice( ). quantiser_scale_code is data indicating the quantization step size set for a macroblock existing in the present slice layer. When quantiser_scale_code is set for each macroblock higher priority is given to macroblock_quantiser_scale_code which is set for each macroblock.
intra_slice_flag is a flag indicating whether a bit stream includes intra_slice and reserved_bits. intra_slice is data indicating whether or not there is a non-intra macroblock in the slice layer. When any one of macroblocks in the slice layer is a non-intra macroblock, intra_slice is set to “0”. In the case where all macroblocks in the slice layer are intra macroblocks, intra_slice is set to “1”. reserved_bits is a 7-bit reserved data area. extra_bit_slice is a flag indicating whether or not there is extra information. When there is extra_information_slice, extra_bit_slice is set to “1”, while extra_bit_slice is set to “0” when there is no extra information.
Following the above data elements, data elements defined by function macroblock( ) are described. As shown in FIG. 12, function macroblock( ) is used to describe data elements such as macroblock_escape, macroblock_address_increment, quantiser_scale_code, and marker_bit and also to describe data elements defined by function macroblock_modes( ), function motion_vectors( ), and function coded_block_pattern( ).
macroblock_escape is a fixed bit string indicating whether or not the difference in the horizontal direction between a reference macroblock and a previous macroblock is equal to or greater than 34. When the difference in the horizontal direction between the reference macroblock and the previous macroblock is equal to or greater than 34, 33 is added to the value of macroblock_address_increment. macroblock_address_increment is data indicating the difference in the horizontal direction between a reference macroblock and a previous macroblock. For example, if there is one macroblock_escape before macroblock_address_increment, the value obtained by adding 33 to macroblock_address_increment indicates the actual difference in the horizontal direction between the reference macroblock and the previous macroblock.
quantiser_scale_code is data indicating the quantization step size set for each macroblock. Quantiser_scale_code is described only when macroblock_quant is equal to “1”. slice_quantiser_scale_code is set for each slice layer to indicate the quantization step size of the slice layer. However, when scale_code is set for a reference macroblock, quantiser_scale_code is selected.
After macroblock_address_increment, data elements defined by function macroblock_modes( ) are described. As shown in FIG. 13, function macroblock_modes( ) is used to describe data elements such as macroblock_type, frame_motion_type, field_motion_type, and dct_type. macroblock_type is data indicating the coding type of a macroblock.
If macroblock_motion_forward or macroblock_motion_backward is equal to “1” and if the picture structure is a frame and furthermore if frame_pred_frame_dct is equal to “0”, a data element representing frame_motion_type is described after a data element representing macroblock_type. frame_pred_frame_dct is a flag indicating whether or not the bit stream includes frame_motion_type.
frame_motion_type is a 2-bit code indicating the prediction type of a macroblock in a frame. In the case where there are two prediction vectors and the prediction is on a field basis, frame_motion_type is set to “00”. In the case where there is one prediction vector and the prediction is on the field basis, frame_motion_type is set to “01”. When there is one prediction vector and the prediction is on the basis of frame, frame_motion_type is set to “10”. In the case where there is one prediction vector and the prediction is on a dual prime basis, frame_motion_type is set to “11”.
field_motion_type is a 2-bit code indicating the motion prediction type of a macroblock in a field. In the case where there is one prediction vector and the prediction is on the basis of field, field_motion_type is set to “01”. When there are two prediction vectors and the prediction is on the basis of 18×8 macroblocks, field_motion_type is set to “10”. In the case where there is one prediction vector and the prediction is on a dual prime basis, field_motion_type is set to “11”.
If the picture structure is a frame and if frame_pred_frame_dct indicates that a bit stream includes frame_motion_type and furthermore if frame_pred_frame_dct indicates that the bit stream includes dct_type, a data element representing dct_type is described after the data element representing macroblock_type. dct_type is data indicating whether DCT is in the frame DCT mode or the field DCT mode.
Each of data elements in an MPEG-2 video bit stream starts with a special bit pattern called a start code. Each start code has a specific bit pattern which is never used in a bit pattern for any other purposes. Each start code consists of a start code prefix and a start code value following the start code prefix. The start code prefix is a bit string of “0000 0000 0000 0000 0000 0001”. The start code value is described in 8 bits to indicate the type of the start code.
FIG. 14 shows the start code values according to the MPEG-2 standard. Most start codes have one start code value. However, slice_start_code includes a plurality of start code values (01 to AF) to indicate the vertical position of a slice. All these start codes are described in units of bytes. Therefore, a plurality of bits of “0” are placed before the start code prefix so that the first bit of the start code prefix becomes the first bit of a byte and thus the start code is described in units of bytes.
A conventional MPEG video decoder capable of coding MP@ML/MPEG-2 video bit streams is described below with reference to FIG. 15. FIG. 15 illustrates an example of a construction of such a type of MPEG video decoder.
This MPEG video decoder includes an IC (Integrated Circuit) 1 and a buffer 12 formed of a DRAM (Dynamic Random Access Memory) or the like, wherein the buffer 2 includes a stream buffer 21 and a video buffer 22, and the IC 1 includes a stream input circuit 11, a buffer control circuit 12, a clock generator 13, a start code detection circuit 14, a decoder 15, a motion compensation circuit 16, and a display signal output circuit 17.
The stream input circuit 11 in the IC 1 receives a high-efficiency coded stream (MP@ML/MPEG-2 video bit stream) and supplies it to the buffer control circuit 12. In response to a basic clock supplied from the clock generator 13, the stream buffer control circuit 12 writes the received coded stream into the stream buffer 21 in the buffer 2. The stream buffer 21 has a storage capacity equal to or greater than 1, 835, 008 needed as the VBV buffer size to decode an MP@ML stream. The coded stream stored in the stream buffer 21 is read in a first-in first-out fashion under the control of the buffer control circuit 12 and supplied to the start code detection circuit 14. The start code detection circuit 42 detects a start code described above with reference to FIG. 14 and outputs the detected start code and the input stream to the decoder 15.
The decoder 15 decodes the input stream in accordance with the MPEG syntax. First, the decoder 15 decodes a header parameter in a picture layer in accordance with the input start code. On the basis of the decoded header parameter, the decoder 15 divides the slice layer into macroblocks and decodes the macroblocks. A prediction vector and pixel data obtained as a result of the decoding are output to the motion compensation circuit 16.
In the technique of coding data into a compressed form according to the MPEG standard, the coding efficiency is improved by using a difference representing motion compensation between adjacent pictures on the basis of temporal redundancy among the adjacent pictures. In this MPEG video decoder, for pixels coded using motion compensation, picture data of a reference picture indicated by the motion vector is added to pixel data to be decoded thereby performing motion compensation and thus decoding the pixel data into original picture data.
In the case where a macroblock output from the decoder 15 does not need motion compensation, the motion compensation circuit 16 writes the pixel data into the video buffer 22 of the buffer 2 via the buffer control circuit 12 in preparation for outputting display data and also for future use as reference data for another picture.
When a macroblock output from the decoder 15 needs motion compensation, the motion compensation circuit 16 reads reference pixel data from the video buffer 22 in the buffer 2 via the buffer control circuit 12 in accordance with the prediction vector output from the decoder 15. The obtained reference pixel data is added to the pixel data supplied from the decoder 15 thereby performing motion compensation. The motion compensation circuit 16 writes the resultant pixel data into the video buffer 22 in the buffer 2 via the buffer control circuit 12 in preparation for outputting display data and also for future use as reference data for another picture.
The display signal output circuit 17 generates a synchronization timing signal used in outputting decoded picture data. In accordance with the timing signal, the display signal output circuit 17 reads pixel data from the video buffer 22 via the buffer control circuit 12 and outputs it as a decoded video signal.
As described above, an MPEG-2 stream has a hierarchical structure. The data sizes of data, from sequence_header to picture_coding_extension in a picture layer described above with reference to FIG. 3, do not depend upon the classes having various profiles and levels described above with reference to FIG. 2. However, the data sizes of data in the slice layer and in lower layers depend upon the number of pixels to be coded.
In HL, as can be understood from FIG. 2, the number of macroblocks which are needed to be processed for one picture is about 6 times greater than needed in ML. In the case of 4:2:2P, as can be seen from FIG. 4, the number of blocks which are needed to be processed in each macroblock is 4/3 times that needed in MP.
Therefore, when a 4:2:2P@HL coded stream is decoded using the conventional MPEG video decoder designed to decode MP@ML streams shown in FIG. 15, the buffer size of the stream buffer 21 becomes insufficient because of the increases in the VBV buffer size and the number of pixels. Furthermore, the increase in the bit rate results in an increase in frequency of accessing to the stream buffer 21 to store an input stream, and the increase in the number of pixels results in an increase in frequency of accessing of the motion compensation circuit 16 to the video buffer 22. As a result, the buffer control circuit 12 becomes necessary to operate at a higher speed. Furthermore, because of the increase in the bit rate and the increases in the numbers of macroblocks and blocks, the decoder 15 becomes necessary to operate at a higher speed.
In general, when signal processing is performed at an increased speed, the result is a great increase in the circuit scale, an increase in the number of components, and an increase in power consumption. Therefore, although recent advancements in the semiconductor technology have made it possible to greatly increase the speed of signal processing circuits and memory (buffer) circuits and to reduce the circuit size, it is still difficult to realize a video decoder with a realistic circuit scale capable of decoding 4:2:2P@HL streams in real time using the conventional technique for decoding MP@HL streams.
When it is desired to reproduce an MP@ML coded stream at a high speed increased by a factor greater than 1 using the conventional MPEG video decoder designed to decode MP@ML streams shown in FIG. 15, one possible technique is to partly extract pictures from given MP@ML coded stream and input the extracted pictures to the MPEG video decoder.
However, in the MPEG coding, as described above with reference to FIG. 1, predictive coding is performed using adjacent pictures as reference pictures. Therefore, if pictures are partly extracted in an arbitrary fashion, it becomes impossible to decode some pictures. For example, as shown in FIG. 16, if picture P10 is not included in the extracted pictures, it becomes impossible to decode pictures B8, B9, B11, and B12 which need picture P10 as a reference picture.
FIG. 17 shows a technique to avoid the above problem. In this technique, extraction is performed such that I pictures and P pictures which are used as reference pictures by other pictures are included in a set of extracted pictures and such that only B pictures which are not used as reference pictures by other pictures are allowed to be discarded and input the resultant MP@ML coded stream including the extracted pictures to the MPEG video decoder. However, in this technique, in order to discard only B pictures, it is necessary to provide a function of detecting B pictures and discarding them. Besides, because only B pictures are discarded, the playback speed of the extracted coded stream becomes a particular value determined by the locations of I pictures, P pictures, and B pictures.
Furthermore, although the playback speed can be set to an arbitrary value by displaying I and P pictures repeatedly as many times as required, the motion of a displayed image becomes jerky.
Another problem of the conventional MPEG video decoder is that a plurality of coded streams, which are input at the same time or which are included in a multi-channel multiplexed stream (transport stream) on which a plurality of channels of coded streams (elementary streams) supplied via DVB are multiplexed, cannot be decoded at the same time to output all of the plurality of channels of decoded video signals at the same time or to output a selected one of the decoded video signals.
In view of the above, it is an object of the present invention to provide a video decoder capable of reproducing a 4:2:2P@HL coded stream in real time and also capable of reproducing an MP@ML coded stream at a high speed, using a circuit with a realistic scale.
It is another object of the present invention to provide a video decoder capable of decoding a plurality of channels of coded streams in parallel.